Класове и обекти

Простите вещества на химичните елементи са метали и неметали. Двата вида вещества притежават както физични, така и химични свойства.

Substances.jpg

Metals.png
При създаването на клас и обекти от този клас, ще се огранича до създаване на клас за простите вещества метали. Ще взема под внимание само три техни физични свойства. Ще създам три обекта- Натрий, Калий, Цинк.

Дефиниране на клас


Дeфиниранeто на клас се осъщeствява по следния начин:
<?php
   class Metals {

  //Деклариране на свойства и дефиниране на методи

   }
?>

Деклариране на свойствата на класа


След дефинирането на класа следва да декларираме свойствата. Това се осъществява във вътрешността на класа (между къдравите скоби).
<?php
   class Metals {
//Деклариране на свойствата на класа
 public $name;                //име на метала
 public $physical_state;      //агрегатно състояние
 public $boiling_temperature  //температура на кипене
 public $melting_temperature  //температура на топене
 
//Деклариране на методите на класа 
}
?>

Дефиниране на методите на класа


Методите на класа са специфични за класа функции. Те са индивидуални действия, които обектите от даден клас могат да извършват.
В нашия случай е необходимо да имаме методи, които да получават и връщат стойности за име, агрегатно състояние, Тк и Тт на съответния обект от класа.
<?php
class Metals {
//Деклариране на свойствата на класа
 public $name;                //име на метала
 public $physical_state;      //агрегатно състояние
 public $boiling_temperature  //температура на кипене
 public $melting_temperature  //температура на топене
 
//Деклариране на методите на класа
public function setName ($par){
         $this->name = $par;
      }
      
public function getName(){
         echo $this->name . "<br>";
      }
public function setPhysicalState ($par){
         $this-> physical_state = $par;
      }
      
public function getPhysicalState(){
         echo $this-> physical_state ."<br>";
      }

public function setBoilingTemperature ($par){
         $this-> boiling_temperature = $par;
      }
      
public function getBoilingTemperature(){
         echo $this-> boiling_temperature . "<br>";
      }
public function setMeltingTemperature ($par){
         $this-> melting_temperature = $par;
      }
      
public function getMeltingTemperature(){
         echo $this-> melting_temperature . "<br>";
      }
}
?>
Декларирането на променливата започва с модификатор за контрол на достъпа. Може да се осъществи първоначално назначаване на стойност на променливата. Дефинираните функции са локални за класа и са предназначени за получаване на достъп до свойствата на обектите. При дефиниране на функцията, името й се предхожда от модификатор за контрол на достъпа.
Псевдо промeнливата $this, заедно с оператора ->, служат за обръщане към извикания обект (обикновено това е обектът към който принадлежи методът (до РНР5)). За достъп до статични и повторно-дефинирани свойства и методи на даден клас и константи, се използва операторът за област на действие (::).

Инстанцииране (създаване) на нов обект


Класовете са структури от данни и действия и служат за създаване на обекти. След като веднъж сме дефинирали класа, от него можем да създадем толкова обекти, колкото ние искаме.
За създаването на нов обект се използва ключовата дума new. Новият обект се присвоява към променлива. Например:

$Sodium = new Metals;

ще създаде нов обект $Sodium, принадлежащ към класа Metals.
Създайте файл phpClass.php:
<?php
//phpClass.php

class Metals {

//Деклариране на свойствата на класа
 public $name;                //име на метала
 public $physical_state;      //агрегатно състояние
 public $boiling_temperature; //температура на кипене
 public $melting_temperature; //температура на топене
 
//Деклариране на методите на класа
 public function setName ($par){
          $this->name = $par;
      }
      
       public function getName(){
          echo $this->name ."<br/>";
      }
 public function setPhysicalState ($par){
          $this-> physical_state = $par;
      }
      
       public function getPhysicalState(){
          echo $this-> physical_state ."<br/>";
      }
 public function setBoilingTemperature ($par){
          $this-> boiling_temperature = $par;
      }
      
       public function getBoilingTemperature(){
          echo $this-> boiling_temperature ."<br/>";
      }
 public function setMeltingTemperature ($par){
          $this-> melting_temperature = $par;
      }
      
       public function getMeltingTemperature(){
          echo $this-> melting_temperature ."<br/>";
      }
}

//Създаване на нов/нови обекти
$Sodium = new Metals;     //Създаване на нов обект „Натрий“
$Potassium= new Metals;   //Създаване на нов обект „Калий“
$Zink= new Metals;        //Създаване на нов обект „Цинк“

?>
Създадохме три нови обекта и те са независими един от друг. Следва да получим досъп до член функциите, за да можем да обработим член променливите.

Извикване на член функциите


Как да зададем име, агрегатно състояние, Тк и Тт на новосъздадените обекти? С помощта на оператора ->, новосъздаденият обект се обръща към член функцията, служеща за задаване на стойност на съответната променлива, описваща определено свойство/характеристика на обекта.

//Задаваме имена на обектите
$Sodium->setName( "Натрий" );
$Potassium->setName( "Калий" );
$Zink->setName( "Цинк" );

//Задаваме агрегатно състояние на обектите
$Sodium->setPhysicalState(“твърдо”);
$Potassium->setPhysicalState(“твърдо”);
$Zink->setPhysicalState(“твърдо”);

//Задаваме температура на кипене на обектите
$Sodium->setBoilingTemperature(“883°С”);
$Potassium->setBoilingTemperature(“759°С”);
$Zink->setBoilingTemperature(“907 °С”);

//Задаваме температура на топене на обектите
$Sodium->setMeltingTemperature(“97,79°С”);
$Potassium->setMeltingTemperature(“63,38°С”);
$Zink->setMeltingTemperature(“419,53°С”);

Следва да извикаме другите член функции, които да получат стойностите, които сме задали, и да ги изведат:

//Получаваме имената на обектите
$Sodium->getName();
$Potassium->getName( );
$Zink->getName();

//Получаваме агрегатното състояние на обектите
$Sodium->getPhysicalState();
$Potassium->getPhysicalState();
$Zink->getPhysicalState();

//Получаваме температурата на кипене на обектите
$Sodium->getBoilingTemperature();
$Potassium->getBoilingTemperature();
$Zink->getBoilingTemperature();

//Получаваме температурата на топене на обектите
$Sodium->getMeltingTemperature();
$Potassium->getMeltingTemperature();
$Zink->getMeltingTemperature();

Добавяме тези редове към файла phpClass.php:
<?php
//phpClass.php
header('Content-Type: text/html; charset=utf-8'); 

class Metals {
//Деклариране на свойствата на класа
 public  $name;                //име на метала
 public $physical_state;       //агрегатно състояние
 public $boiling_temperature;  //температура на кипене
 public $melting_temperature;  //температура на топене
 
//Деклариране на методите на класа
 public function setName ($par){
          $this->name = $par;
      }
      
  public function getName(){
          echo $this->name ."<br/>";
      }
 public function setPhysicalState ($par){
          $this-> physical_state = $par;
      }
      
       public function getPhysicalState(){
          echo $this-> physical_state ."<br/>";
      }
 public function setBoilingTemperature ($par){
          $this-> boiling_temperature = $par;
      }
      
       public function getBoilingTemperature(){
          echo $this-> boiling_temperature ."<br/>";
      }
 public function setMeltingTemperature ($par){
          $this-> melting_temperature = $par;
      }
      
       public function getMeltingTemperature(){
          echo $this-> melting_temperature ."<br/>";
      }
}

//Създаване на нов/нови обекти
$Sodium = new Metals;      //Създаване на нов обект „Натрий“
$Potassium= new Metals;    //Създаване на нов обект „Калий“
$Zink= new Metals;         //Създаване на нов обект „Цинк“

//Задаваме имена на обектите
$Sodium->setName( "Натрий" );
$Potassium->setName( "Калий" );
$Zink->setName( "Цинк" );

//Задаваме агрегатно състояние на обектите
$Sodium->setPhysicalState("твърдо");
$Potassium->setPhysicalState("твърдо");
$Zink->setPhysicalState("твърдо");

//Задаваме температура на кипене на обектите
$Sodium->setBoilingTemperature("883 °C");
$Potassium->setBoilingTemperature("759 °C");
$Zink->setBoilingTemperature("907 °C");

//Задаваме температура на топене на обектите
$Sodium->setMeltingTemperature("97,79°C");
$Potassium->setMeltingTemperature("63,38°C");
$Zink->setMeltingTemperature("419,53°C");

//Получаваме имената на обектите
echo 'Имената на обектите са: ' . '<br>';
$Sodium->getName();
$Potassium->getName( );
$Zink->getName();

//Получаваме агрегатното състояние на обектите
echo 'Агрегатните състояния на обектите са: ' . '<br>';
$Sodium->getPhysicalState();
$Potassium->getPhysicalState();
$Zink->getPhysicalState();

//Получаваме температурата на кипене на обектите
echo 'Температурите на кипене на обектите са: ' . '<br>';
$Sodium->getBoilingTemperature();
$Potassium->getBoilingTemperature();
$Zink->getBoilingTemperature();

//Получаваме температурата на топене на обектите
echo 'Температурите на топене на обектите са: ' . '<br>';
$Sodium->getMeltingTemperature();
$Potassium->getMeltingTemperature();
$Zink->getMeltingTemperature();

?>
Тестваме в браузъра:

phpClass_php.png

Може да си поиграете и да структурирате данните в таблица.82530.gif

Функции за работа с класове и обекти


function_classes_objects.png

Повече на адрес: http://php.net.
sign.png

Няма коментари:

Публикуване на коментар